package cn.xopencode.oss.rpc.oauth;

import cn.xopencode.common.framework.vo.CommonResult;
import cn.xopencode.oss.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
import cn.xopencode.oss.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO;
import cn.xopencode.oss.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO;
import cn.xopencode.oss.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO;

/**
 *Token认证RPC
 */
public interface OAuth2Rpc {
    /**
     * createAccessToken
     * @param createAccessTokenDTO
     * @return
     */
    CommonResult<OAuth2AccessTokenRespDTO> createAccessToken(OAuth2CreateAccessTokenReqDTO createAccessTokenDTO);

    /**
     * checkAccessToken
     * @param accessToken
     * @return
     */
    CommonResult<OAuth2AccessTokenRespDTO> checkAccessToken(String accessToken);

    /**
     * refreshAccessToken
     * @param refreshAccessTokenDTO
     * @return
     */
    CommonResult<OAuth2AccessTokenRespDTO> refreshAccessToken(OAuth2RefreshAccessTokenReqDTO refreshAccessTokenDTO);

    /**
     * removeToken
     * @param removeTokenDTO
     * @return
     */
    CommonResult<Boolean> removeToken(OAuth2RemoveTokenByUserReqDTO removeTokenDTO);

}
